

import java.awt.BorderLayout;

import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;


import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;


public class Interfaz extends JFrame implements ActionListener{
	
	JTextArea texto;
	JScrollPane scroll;
	public Interfaz(){
		texto = new JTextArea();
		//texto.setBounds(0, 0,400,400);
		scroll = new JScrollPane(texto);
		//scroll.add(texto);
		//scroll.setBounds(0, 0, 10, 10);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(0, 0, 500, 500);
		setLayout(new BorderLayout());
		Menu menu = new Menu(this);
		getContentPane().add(menu, BorderLayout.NORTH);
		getContentPane().add(scroll, BorderLayout.CENTER);
		setVisible(true);
	}
	
	public void cargarArchivo(File archivo){
		BufferedReader br;
		try {
			br = new BufferedReader(new FileReader(archivo));
			String tex = "";
			int a = br.read();
			while (a!=-1){
				tex += (char)a;
				a = br.read();
			}
			texto.setText(tex);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	public static void main(String[] args) {
		Interfaz interfaz = new Interfaz();
		JFileChooser jfc = new JFileChooser();
		jfc.setDialogTitle("Escoja un archivo");
		int a = jfc.showOpenDialog(interfaz);
		if (a!=JFileChooser.APPROVE_OPTION) System.exit(0);
		try {
			interfaz.cargarArchivo(jfc.getSelectedFile());
			eg1 parser = new eg1(new FileInputStream(jfc.getSelectedFile()));
				SimpleNode arbol = parser.Program();
				arbol.dump("");
				
			System.out.println("OK.");
			//System.out.println(eg1.arbolito);
		} catch (FileNotFoundException e) {
			System.out.println("No se pudo abrir el archivo seleccionado.");
		} catch (ParseException e) {
			interfaz.texto.setText("Archivo no está sintácticamente correcto\n" + e.getMessage());
			e.printStackTrace();
		}
	}
	
	
	public void actionPerformed(ActionEvent e) {

		
		
	}


	
	
	public class Menu extends JMenuBar{
		
		public Menu(Interfaz i){
			super();
			JMenu archivo = new JMenu("Archivo");
			JMenuItem creditos = new JMenuItem("Acerca de...");
			creditos.setActionCommand("creditos");
			creditos.addActionListener(i);
			JMenuItem correr = new JMenuItem("Generar arbol");
			correr.setActionCommand("correr");
			correr.addActionListener(i);
			correr.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0));
			JMenuItem abrir = new JMenuItem("Abrir");
			abrir.setActionCommand("abrir");
			abrir.setAccelerator(KeyStroke.getKeyStroke('A', Event.CTRL_MASK));
			abrir.addActionListener(i);
			JMenuItem guardar = new JMenuItem("Guardar");
			guardar.setActionCommand("guardar");
			guardar.setAccelerator(KeyStroke.getKeyStroke('G', Event.CTRL_MASK));
			guardar.addActionListener(i);
			JMenuItem cerrar = new JMenuItem("Cerrar");
			cerrar.setActionCommand("cerrar");
			cerrar.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, Event.ALT_MASK));
			cerrar.addActionListener(i);
			archivo.add(abrir);
			archivo.add(guardar);
			archivo.add(new JSeparator());
			archivo.add(cerrar);
			this.add(archivo);
			add(creditos);
			add(correr);
		}
		
	}


}
